首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏云时代Java开发:原理、实战与优化

    Java NIO 中断引擎:AbstractSelector 源码深度剖析与可中断阻塞机制

    本文将基于JDK25最新源码,对AbstractSelector进行原子级的解构。 volatileboolean+VarHandle直接嵌入AbstractSelector实例中,零额外对象开销,缓存行利用率更高。 AbstractSelector的interruptor就是这条链路的枢纽。 AbstractSelector的中断协议因此成为了传统线程与虚拟线程共享的基础设施。 随着ProjectLoom的成熟和io_uring等新I/O原语的引入,AbstractSelector的实现细节将继续演化。

    11420编辑于 2026-05-24
  • 来自专栏码匠的流水账

    聊聊NacosNamingService的getServicesOfServer

    null); } @Override public ListView<String> getServicesOfServer(int pageNo, int pageSize, AbstractSelector Override public ListView<String> getServicesOfServer(int pageNo, int pageSize, String groupName, AbstractSelector null); } public ListView<String> getServiceList(int pageNo, int pageSize, String groupName, AbstractSelector

    91210发布于 2019-10-12
  • 来自专栏码匠的流水账

    聊聊NacosNamingService的getServicesOfServer

    null); } ​ @Override public ListView<String> getServicesOfServer(int pageNo, int pageSize, AbstractSelector Override public ListView<String> getServicesOfServer(int pageNo, int pageSize, String groupName, AbstractSelector null); } ​ public ListView<String> getServiceList(int pageNo, int pageSize, String groupName, AbstractSelector

    69100发布于 2019-10-10
  • 来自专栏云时代Java开发:原理、实战与优化

    Java NIO 并发原语:AbstractSelectionKey 源码深度剖析与 VarHandle 原子语义

    跳过抽象层:AbstractSelector.cancel()是一个同步方法(见下文),它会获取cancelledKeys集合的锁。 减少对象创建:AbstractSelector.cancel()可能需要将Key包装或转换,而直接调用可以避免这些中间对象。 路径二:AbstractSelector通用路径对于第三方Selector实现(如Netty的自定义Selector、AIOSelector等),它们继承自AbstractSelector而非SelectorImpl 第五章:与AbstractSelector和AbstractSelectableChannel的协同AbstractSelectionKey不是孤立存在的。 渐进式抽象:保留SPI扩展点(AbstractSelector路径),同时为常见场景提供特化优化(SelectorImpl路径)。

    10720编辑于 2026-05-23
  • 来自专栏netty

    netty之selector与selectorProvider

    extends SelectorProviderImpl { public WindowsSelectorProvider() { } // 获得选择器 public AbstractSelector

    40850编辑于 2023-09-04
  • 来自专栏爬蜥的学习之旅

    java中线程池的生命周期与线程中断

    interruptor.interrupt(me); } 2.如果线程阻塞在Selector,执行它的 wakeup方法,因而selector会立即返回,同时会设置中断标志 //AbstractSelector public void interrupt(Thread ignore) { //执行wakeup,Selector立即返回 AbstractSelector.this.wakeup

    1.5K10发布于 2019-07-09
  • 来自专栏后端技术

    java nio 源码分析1 事件注册

    SelectorProvider.provider().openSelector(); } linux中是EPollSelectorProvider, 该openSelector方法为: public AbstractSelector isOpen()) throw new ClosedChannelException(); k = ((AbstractSelector

    1.1K20发布于 2019-12-19
  • 来自专栏码匠的流水账

    聊聊nacos NamingProxy的getServiceList

    null); } ​ public ListView<String> getServiceList(int pageNo, int pageSize, String groupName, AbstractSelector " + exception.getMessage()); ​ } //...... } getServiceList方法有个AbstractSelector

    1.1K00发布于 2019-10-05
  • 来自专栏码匠的流水账

    聊聊nacos NamingProxy的getServiceList

    null); } public ListView<String> getServiceList(int pageNo, int pageSize, String groupName, AbstractSelector : " + exception.getMessage()); } //...... } getServiceList方法有个AbstractSelector

    1.3K20发布于 2019-10-09
  • 来自专栏netty

    selector与selectionKey与channel之间关系

    可以有多个SelectionKey, 代表一个Channel可以有多个Selector, 1:N 图片 // 选择器类 public abstract class SelectorImpl extends AbstractSelector

    48020编辑于 2023-09-18
  • 来自专栏Java技术进阶

    一个Spring Boot Admin 监控多个Nacos集群

    com.alibaba.nacos.api.naming.pojo.ListView; import com.alibaba.nacos.api.naming.pojo.ServiceInfo; import com.alibaba.nacos.api.selector.AbstractSelector listView; } @Override public ListView<String> getServicesOfServer(int pageNo, int pageSize, AbstractSelector Override public ListView<String> getServicesOfServer(int pageNo, int pageSize, String groupName, AbstractSelector

    64710编辑于 2024-02-13
  • 来自专栏Netty历险记

    Netty对底层Selector的优化

    private Selector selector; 那么我们简单看一下这个Selector在JDK层面的实现 public abstract class SelectorImpl extends AbstractSelector

    40610编辑于 2022-06-02
  • 来自专栏coolblog.xyz技术专栏

    Java NIO之选择器

    */ public class EPollSelectorProvider extends SelectorProviderImpl { public AbstractSelector openSelector pollWrapper.initInterrupt(fd0, fd1); fdToKey = new HashMap<>(); } } public abstract class SelectorImpl extends AbstractSelector isOpen()) throw new ClosedChannelException(); k = ((AbstractSelector (k); } } return k; } } } public abstract class AbstractSelector int ops, Object att); } public abstract class SelectorImpl extends AbstractSelector

    1.6K70发布于 2018-04-26
  • 来自专栏云时代Java开发:原理、实战与优化

    Java NIO 1.0 架构基石:SelectorProvider 源码深度剖析与 SPI 工厂模式

    注意openSelector()返回的是AbstractSelector而非Selector——这是因为AbstractSelector包含了中断协议和取消键管理等SPI级别的实现细节,子类必须继承它。 返回正确的抽象类型:openSelector()必须返回AbstractSelector的子类。

    14620编辑于 2026-05-24
  • 从NIO server到epoll源码解析

    先找到AbstractSelectableChannel.register方法,定位到((AbstractSelector)sel).register(this, ops, att)找到SelectorImpl.register throw new ClosedChannelException(); //register方法 k = ((AbstractSelector

    28810编辑于 2025-05-28
  • 来自专栏韩曙亮的移动开发专栏

    【Netty】NIO 选择器 ( Selector ) 简介

    SelectionKey 集合 : 存储有事件发生的 通道 ( Channel ) 对应的 SelectionKey ; public abstract class SelectorImpl extends AbstractSelector

    93410编辑于 2023-03-27
  • 来自专栏瓜农老梁

    Java NIO选择器【源码笔记】

    ClosedChannelException(); // 注册channel到selector并返回选择SelectionKey k = ((AbstractSelector

    84510发布于 2020-03-12
  • 来自专栏光华路程序猿

    java nio源码那点儿事儿

    EPollSelectorProvider public class EPollSelectorProvider extends SelectorProviderImpl { public AbstractSelector isOpen()) throw new ClosedChannelException(); k = ((AbstractSelector

    82430编辑于 2022-06-29
  • 来自专栏云时代Java开发:原理、实战与优化

    Java NIO 核心基石:AbstractSelectableChannel 源码深度剖析与架构设计哲学

    例如removeKey(SelectionKeyk)方法是包级私有的,因为它只应由同包下的AbstractSelector在取消注册时调用,普通用户不应也无法直接干预Key的内部移除过程。 **包级私有可见性**:如前所述,它只允许同包的`AbstractSelector`调用。这防止了用户代码意外或恶意地破坏通道内部的Key一致性。2. =null){//第七步:更新已有Keyk.attach(att);k.interestOps(ops);}else{//第八步:创建新Key(委托给Selector)k=((AbstractSelector ####4.2.4委托注册与双向绑定`((AbstractSelector)sel).register(this,ops,att)`这一行揭示了Channel与Selector之间的双向协作关系。

    12120编辑于 2026-05-23
  • 来自专栏云时代Java开发:原理、实战与优化

    Java NIO.2 异步基石:AsynchronousChannelProvider 源码深度剖析与 SPI 架构哲学

    1.2SPI包的访问控制哲学展开代码语言:TXTAI代码解释publicabstractclassAsynchronousChannelProvider注意该类是publicabstract,而非像AbstractSelector

    12220编辑于 2026-05-24
领券